Gestion et sécurisation des comptes d’utilisateurs sur un système Linux

By mdestroy | September 23, 2020

0 Comment

Sur Linux, il existe plusieurs fonctionnalités servant à faciliter la gestion des comptes d’utilisateurs et leur sécurisation.
Dans cet article, j’essaierai d’évoquer les plus populaires (importants).
Les fonctionnalités que nous aborderons sont: les Quota, les permissions de fichier, le SGID, les ACLs, libpam_cracklib et les outils de gestion d’utilisateur chmod, chown, useradd, passwd, chage, groupadd.

Supposons donc que les tâches ci-dessous nous soient confiées:

  1. 1.Créer les groupes d’utilisateurs suivants: securitydevelopmentmanagement, ainsi que leurs utilisateurs en se basant sur l’illustration suivante:
     
  2. 2.Ci-dessous les propriétés des comptes d’utilisateurs à définir: 

  1. 2.Créer un 4ème groupe partagé workers qui comprendra tous les employés. S’assurer que workers est le groupe primaire de tous les employés. 

  2. 3.Monter les répertoires de travail /security/development/management respectivement dans les devices /dev/sda, /dev/sdb, /dev/sdc en utilisant la fonctionnalité Quota. 

  3. 4.Régler un quota pour chaque utilisateur sur chaque répertoire de travail. 30000 inodes pour les utilisateurs du répertoire /security. 70000 inodes pour les utilisateurs du répertoire /development. 70000 inodes pour les utilisateurs du répertoire /management. 

  4. 5.Chaque employé doit pouvoir lire/créer et accéder à tous les fichiers de son répertoire de travail. 

  5. 6.Tout fichier créé doit avoir comme propriétaires son créateur et le groupe du créateur. 

  6. 7.Les utilisateurs ne devraient pas pouvoir supprimer les fichiers des autres hormis leurs supérieurs hiérarchiques. 

  7. 8.Le groupe development doit avoir un accès en lecture sur le répertoire /security. 

  8. 9.Le groupe security doit avoir un accès en lecture sur le répertoire /development. 

  9. 10.Le groupe management doit avoir un accès en lecture sur le répertoire /security. 

  10. 11.Le groupe management doit avoir un accès en lecture sur le répertoire /development. 

  1. 1.  

Nous réaliserons ces tâches sur un système Ubuntu Bionic.

Groupadd, login.def

Sans plus tarder, commençons par la création des groupes d’utilisateurs à l’aide de la commande groupadd.

La syntaxe:

 

Avant de passer à la création des utilisateurs, il nous faudra configurer certains fichiers pour la définition de leurs propriétés par défaut.

Ainsi, nous devons modifier les directives PASS_MAX_DAYS et PASS_MAX_DAYS du fichier /etc/login.defs qui serviront respectivement à forcer les utilisateurs à modifier leurs mots de passe après un nombre défini de jours et à fixer le nombre de jour minimal entre les modifications de mot de passe.

Libpam_cracklib

Le package libpam_cracklib inclut un module PAM imposant la complexité des mots de passe.
Une fois installé, ce module éffectue une série de tests pour vérifier la force des mots de passe des utilisateurs. Le module cherche à savoir par exemple si le mot de passe utilisé est un palindrome, s’il est monotonique ou s’il contient un nom d’utilisateur. Je vous invite à lire 
cet article si vous souhaitez en savoir plus sur le package Libpam_cracklib

Libpam_cracklib peut être installé comme suit:

# apt-get install libpam_cracklib

Pour configurer la complexité des passwords sur notre système comme stipulé dans l’énoncé, il faudra modifier le fichier /etc/pam.d/common-password, en y ajoutant les directives minlen=8, ucredit=-1, lcredit=-1, dcredit=-1, ocredit=-1 à la ligne invoquant pam_cracklib.so.
Quant à la définition de l’historique des mots de passe, il faudra ajouter la directive 
remember 5 à la ligne invoquant le module pam_unix.so.

Nous sommes à présent sûrs que tous les futurs utilisateurs de ce système auront tous les mêmes propriétés de compte et de mots de passe.

Useradd, Passwd

A l’aide de useradd, créeons donc les utilisateurs de telle sorte qu’ils aient pour groupe principal workers, puis comme second groupe, leur groupe de travail.

La syntaxe:

# useradd -m user -g primary-group -G working-group

L’option m servant à créer un répertoire de base pour l’utilisateur, l’option g à configurer le groupe primaire et l’option G le groupe secondaire.

 

Les propriétés de l’un des comptes créés:


Le script ci-dessous nous permettra de créer des mots de passe forts des utilisateurs nouvellement créés et les sauvegarder dans un fichier accessible que par le compte root. Le mot de passe pourra ensuite être partagé aux utilisateurs de façon sécurisée.
La commande 
chage présente dans la dernière ligne du script forcera les utilisateurs à créer leur propre mot de passe à leur prochaine connexion.

#!/bin/bash

USERPASS=$(head /dev/urandom | tr -dc 'A-Za-z0-9!"#$%&'\''()*+,-./:;<=>?@[\]^_`{|}~' | head -c 8)

NAME=${1?Error: no name given}

echo "$1:$USERPASS" | chpasswd

echo "$1:$USERPASS">>passfile

chmod 700 passfile

chage -d 0 $1

L’exécution du script pour l’initialisation du mot de passe du compte anouk:

Quota

Quota est une fonctionnalité du kernel Linux servant à limiter l’espace disque un utilisateur ou un groupe peut utiliser. Quota sert également à limiter le nombre de fichiers (inodes) qu’un utilisateur ou un groupe peut créer sur une machine.

Installation de Quota:

# apt install quota -y

Après l’installation de Quota, montons dans fstab les devices dans des dossiers locaux à l’aide de leur identifiant unique universel (UUID) accessible via la commande blkid.

Une exécution de mount -a nous assure que nos dossiers sont montés comme il le faut avec les bonnes options.

La syntaxe ci-dessous permet d’activer l’utilisation de Quota sur les utilisateurs et groupes d’utilisateurs.

# quotacheck -cugm /mounted-folder


La syntaxe ci-dessous permet d’activer Quota.

# quotaon -v /mounted-folder


La syntaxe suivante sert à éditer le quota d’un utilisateur.

# edquota -u user

La capture suivante montre que l’utilisateur linda pourra créer au maximum 30000 fichiers sur le système de fichier /dev/sda monté dans le dossier /security.

Celle-ci montre que l’utilisateur anouk pourra créer tout au plus 70000 fichiers sur le système de fichier /dev/sdb monté dans le dossier /development.

Enfin, cette dernière montre que l’utilisateur raul pourra créer 70000 fichiers maxi sur le système de fichier /dev/sdc monté dans le dossier /management.

chown, chmod, SGID

A l’aide de chown, nous pouvons attribuer la possession des dossiers aux chefs d’équipe (et à leur groupe) de telle sorte qu’ils soient les seuls à avoir un contrôle sur tous les fichiers créés dans leurs dossiers respectifs.

La syntaxe:

# chown user:group folder



chmod nous permettra d’indiquer les permissions souhaitées sur les dossiers et de mettre en place de SGID qui fera que le groupe secondaire de l’utilisateur créeant le fichier soit propriétaire.

# chmod 2770 groupname

L’image ci-dessous montre que le SGID est bien en place.

ACL

Les ACL (Access Control List) fournissent un mécanisme de permissions plus flexible aux systèmes de fichiers. A la différence des permissions Linux qui fournissent une permission générale sur les dossiers et fichiers, les ACL permettent de configurer des permissions spécifiques d’un utilisateur (groupe  d’utilisateurs) sur n’importe quelle ressource.

Nous utiliserons la syntaxe ci-dessous pour configurer la liste d’accès sur chaqun des dossiers.

# setfacl -m g:group:rx /folder

La syntaxe ci-dessous nous servira à configurer une liste d’accès par défaut sur les dossiers.

# setfacl -m d:g:group:rx /folder

Dans l’image ci-dessous, nous parvenons à configurer les listes d’accès sur le dossier security suivant l’énoncé.
La commande 
getfacl permet d’afficher les  listes d’accès configurés.

Ainsi prend fin cet article. J’espère qu’il ne vous a pas paru trop long (^^) et que vous aurez appris de nouvelles choses. :-).